package org.utnrepasa.net;

import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

import android.util.Log;

/**
 * Esta clase se conecta con el servidor y permite enviar acciones al mismo.
 *
 * @author Parisi Germán
 * @version 1.1
 */
public class Client {

    public static final int PORT = 9003;
    public static final String SERVER_IP = "10.0.2.2";
    private Connection connection;

    public Client() {
        try {
            Socket socket = new Socket(SERVER_IP, PORT);
            connection = new Connection(socket);
            Thread th = new Thread(connection);
            th.start();
        } catch (IOException ex) {
            Log.e("error grave: " + Client.class.getName(), ex.getMessage());
        }
    }

    /**
     * Envia una acción al servidor. No valida que la acción sea válida y que el
     * servidor actuará como se espera.
     *
     * @param action Es la acción a enviar.
     */
    public void send(RequestAction action) {
        if (this.connection != null) {
            this.connection.send(action);
        } else {
            throw new NullPointerException("EL objeto connection es nulo. Esto puede ser a que nunca se pudo conectar con el servidor. Verifique la IP y puerto.");
        }
    }
}
